module.exports=options=>{
    const assert=require('http-assert') 
    const jwt=require('jsonwebtoken')
    const AdminUser=require('../models/AdminUser')


//登陆校验中间件
    return async(req,res,next)=>{
        //用空格分割掉Bearer 和token的内容，用pop()提取token的内容
        const token=String(req.headers.authorization||'').split(' ').pop()//获取请求头里面的authorization 小写，前端标准是大写
        assert(token,401,'请先登陆')//请提供jwt token
        const {id}=jwt.verify(token,req.app.get('secret'))//解密token
        assert(id,401,'请先登陆')//无效的jwt token
        req.user=await AdminUser.findById(id) //将user挂在到req上后续也能继续使用
        assert(req.user,401,'请先登陆')
        await next()
    }
}

